10989번 수 정렬하기 3
Day12 13단계 20231029
✒️ 2023-11-09 14:02 내용 수정
-
내장된 sort() 메소드를 쓰면 시간이 매우 걸린다.
-
카운트 정렬 방법을 사용한 문제였다.
- 입력값의 범위가 자연수로 주어지고, 범위가 정해져 있다면 그 범위를 길이로 갖는 배열을 생성한다.
- 입력값이 들어오면 그 입력값과 같은 인덱스의 요소를 1 증가시킨다.
-
다른 방법으로 정렬하는 것이 시간 단축에 도움이 될 것이다.
-
이 코드는 처리 시간이 1780ms 이다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[] nums = new int[10001];
for (int i = 1; i <= n; i++) {
nums[Integer.parseInt(br.readLine())]++;
}
for(int i = 1; i < 10001; i++) {
while (nums[i] > 0) {
bw.write(i+"\n");
nums[i]--;
}
}
bw.flush();
bw.close();
br.close();
}
}
- 이 코드는 처리 시간이 1788ms 이다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
int[] nums = new int[10001];
for (int i = 1; i <= n; i++) {
nums[Integer.parseInt(br.readLine())]++;
}
for(int i = 1; i < 10001; i++) {
while (nums[i] > 0) {
sb.append(i+"\n");
nums[i]--;
}
}
System.out.println(sb.toString());
br.close();
}
}